package com.ziven.common.widget.value;

import android.view.View;

import androidx.annotation.NonNull;

import com.ziven.common.widget.R;
import com.ziven.easygo.util.LogHelper;
import com.ziven.easygo.util.ViewHelper;

/**
 * @author Ziven
 */
public final class ViewTag extends Value {

    public static ViewTag tag(@NonNull Object tag) {
        return new ViewTag(tag);
    }

    public static ViewTag tag(@NonNull String tagId, @NonNull Object tag) {
        return new ViewTag(tagId, tag);
    }

    private ViewTag(@NonNull Object tag) {
        value(tag);
    }

    private ViewTag(@NonNull String tagId, @NonNull Object tag) {
        setId(tagId).value(tag);
    }

    @Override
    protected void takeEffect(@NonNull ViewHelper<? extends View> helper) {
        helper.getViewNulls().doNotNull(view -> {
            LogHelper.log("ViewTag", id, value);
            if(id instanceof String) {
                setTag((String) id, view, value);
            } else {
                view.setTag(value);
            }
        });
    }

    private void setTag(@NonNull String tagId, @NonNull View view, Object tag) {
        switch (tagId) {
            case "easy_common_widget_id_0":
                view.setTag(R.id.easy_common_widget_id_0, tag);
                break;
            case "easy_common_widget_id_1":
                view.setTag(R.id.easy_common_widget_id_1, tag);
                break;
            case "easy_common_widget_id_2":
                view.setTag(R.id.easy_common_widget_id_2, tag);
                break;
            case "easy_common_widget_id_3":
                view.setTag(R.id.easy_common_widget_id_3, tag);
                break;
            case "easy_common_widget_id_4":
                view.setTag(R.id.easy_common_widget_id_4, tag);
                break;
            case "easy_common_widget_id_5":
                view.setTag(R.id.easy_common_widget_id_5, tag);
                break;
            case "easy_common_widget_id_6":
                view.setTag(R.id.easy_common_widget_id_6, tag);
                break;
            case "easy_common_widget_id_7":
                view.setTag(R.id.easy_common_widget_id_7, tag);
                break;
            case "easy_common_widget_id_8":
                view.setTag(R.id.easy_common_widget_id_8, tag);
                break;
            case "easy_common_widget_id_9":
                view.setTag(R.id.easy_common_widget_id_9, tag);
                break;
            case "easy_common_widget_id_10":
                view.setTag(R.id.easy_common_widget_id_10, tag);
                break;
            case "easy_common_widget_id_11":
                view.setTag(R.id.easy_common_widget_id_11, tag);
                break;
            case "easy_common_widget_id_12":
                view.setTag(R.id.easy_common_widget_id_12, tag);
                break;
            case "easy_common_widget_id_13":
                view.setTag(R.id.easy_common_widget_id_13, tag);
                break;
            case "easy_common_widget_id_14":
                view.setTag(R.id.easy_common_widget_id_14, tag);
                break;
            case "easy_common_widget_id_15":
                view.setTag(R.id.easy_common_widget_id_15, tag);
                break;
            case "easy_common_widget_id_16":
                view.setTag(R.id.easy_common_widget_id_16, tag);
                break;
            case "easy_common_widget_id_17":
                view.setTag(R.id.easy_common_widget_id_17, tag);
                break;
            case "easy_common_widget_id_18":
                view.setTag(R.id.easy_common_widget_id_18, tag);
                break;
            case "easy_common_widget_id_19":
                view.setTag(R.id.easy_common_widget_id_19, tag);
                break;
            case "easy_common_widget_id_20":
                view.setTag(R.id.easy_common_widget_id_20, tag);
                break;
            case "easy_common_widget_id_parent":
                view.setTag(R.id.easy_common_widget_id_parent, tag);
                break;
            case "easy_common_widget_id_child":
                view.setTag(R.id.easy_common_widget_id_child, tag);
                break;
            default:
                view.setTag(tag);
                break;
        }
    }
}
